package ninth.Java中线程的实现;

/**
 * 多线程的定义语法：
 * class 类名称 extends Thread{       //继承Thread类
 *     属性****；
 *     方法****；
 *     public void run(){            //覆写Thread类中的run()方法 ，此方法是线程的主体
 *         线程主体；
 *     }
 * }
 */
class MyThread extends Thread{
    private String name;
    public MyThread(String name){
        this.name=name;
    }
    public void run(){
        for (int i = 0; i <10 ; i++) {
            System.out.println(name+"运行，i="+i);
        }
    }
}
public class 继承Thread类实现多线程 {
    public static void main(String[] args) {
        MyThread t1 = new MyThread("线程A");
        MyThread t2 = new MyThread("线程B");
        t1.run();   //调用线程主体
        t2.run();
    }
}
/*
D:\WorkSpaces\Java\jdk-21\bin\java.exe "-javaagent:D:\Software\IntelliJ IDEA\IntelliJ IDEA 2023.3.2\lib\idea_rt.jar=61446:D:\Software\IntelliJ IDEA\IntelliJ IDEA 2023.3.2\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath D:\WorkSpaces\JavaDevelopBase_start_329\out\production\JavaDevelopBase_start_329 ninth.Java中线程的实现.继承Thread类实现多线程
线程A运行，i=0
线程A运行，i=1
线程A运行，i=2
线程A运行，i=3
线程A运行，i=4
线程A运行，i=5
线程A运行，i=6
线程A运行，i=7
线程A运行，i=8
线程A运行，i=9
线程B运行，i=0
线程B运行，i=1
线程B运行，i=2
线程B运行，i=3
线程B运行，i=4
线程B运行，i=5
线程B运行，i=6
线程B运行，i=7
线程B运行，i=8
线程B运行，i=9

Process finished with exit code 0
 */

/**
 * 上面程序是先执行t1然后再执t2，并没有像之前说的那样交错运行，也就是说，此时线程实际上并没有被启动，还是属于顺序式的执行方式。
 * 那么，如何启动线程呢？如果想要正确的启动线程，是不能直接调用run()方法的，而是应该给调用从Thread类中继承而来的start()方法
 */